#include<bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,j,k) for(int i=(j);i<=(k);i++)
#define per(i,j,k) for(int i=(j);i>=(k);i--)
#define pb emplace_back
#define mp make_pair
#define fi first
#define se second
using vi=vector<int>;
using pi=pair<int,int>;

signed main(){
	freopen("list.in","r",stdin);
	freopen("list.out","w",stdout);
	ios::sync_with_stdio(0);cin.tie(0);
	
	int n; cin>>n;
	vector<vi> a(n);
	vi b(n);
	int C;
	rep(i,0,n-1){
		int k; cin>>k;
		a[i].resize(k);
		for(int &x:a[i]){
			cin>>x;
		}
	}
	cin>>C;
	for(int &x:b){
		cin>>x;
	}
	rep(i,0,n-1){
		b[i]*= i+1;
	}
	
	vi lis{0};
	rep(i,0,n-1){
		rep(j,0,(int)a[i].size()-2){
			lis.pb(a[i][j+1]-a[i][j]);
		}
	}
	sort(lis.begin(), lis.end());
	lis.erase(unique(lis.begin(), lis.end()), lis.end());
	
	vector<__int128> ch(lis.size()+1), cch(lis.size()+1);
	
	auto slv0=[&](){
		rep(i,0,n-1){
			cch[0]+= a[i].size()*C;
			rep(j,0,(int)a[i].size()-2){
				int len=a[i][j+1]-a[i][j];
				int idx=lower_bound(lis.begin(), lis.end(), len)-lis.begin();
				cch[idx]-= C;
			}
		}
	};
	
	auto slv1=[&](){
		vi clis;
		rep(i,0,n-1){
			clis.insert(clis.end(), a[i].begin(), a[i].end());
		}
		sort(clis.begin(), clis.end());
		clis.erase(unique(clis.begin(), clis.end()), clis.end());
		
		vector<vector<pi>> ID(clis.size());
		rep(i,0,n-1){
			rep(j,0,(int)a[i].size()-1){
				ID[ lower_bound(clis.begin(), clis.end(), a[i][j])-clis.begin() ].pb(i, j);
			}
		}
		
		rep(i,0,(int)clis.size()-1){
			vi dlt;
			for(auto [id,p]:ID[i]){
				if(p==0){
					dlt.pb(lis.size());
				}
				else{
					dlt.pb( lower_bound(lis.begin(), lis.end(), a[id][p]-a[id][p-1])-lis.begin() );
				}
			}
			sort(dlt.begin(), dlt.end(), greater<int>());
			for(int j=0, k=0; j<(int)dlt.size(); j=k){
				while(k<(int)dlt.size() && dlt[j]==dlt[k]){
					k++;
				}
				ch[ k==(int)dlt.size()? 0: dlt[k] ]+= b[k-1];
				ch[ dlt[j] ]-= b[k-1];
			}
		}
	};
	
	slv0();
	slv1();
	
	lis.pb(lis.back()+1);
	
	__int128 csum=0, mnsum=1e18;
	vi ans;
	rep(i,0,(int)lis.size()-2){
		if(i>0){
			cch[i]+= cch[i-1];
		}
		csum+= ch[i];
		__int128 d=cch[i];
		if(d>0){
			__int128 cval=csum+d;
			if(cval<mnsum){
				mnsum=cval;
				ans.clear();
			}
			if(cval==mnsum){
				ans.pb(lis[i]+1);
			}
		}
		if(d==0){
			if(csum==mnsum){
				rep(j,lis[i]+1,lis[i+1]){
					ans.pb(j);
				}
			}
		}
		if(d<0){
			__int128 cval=csum+d*(lis[i+1]-lis[i]);
			if(cval<mnsum){
				mnsum=cval;
				ans.clear();
			}
			if(cval==mnsum){
				ans.pb(lis[i+1]);
			}
		}
		csum+= d*(lis[i+1]-lis[i]);
	}
	
	cout<< (int)mnsum <<' '<< ans.size() <<'\n';
	for(int x:ans){
		cout<< x <<' ';
	}
	cout<<'\n';
}